home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1995-08-10 | 36.2 KB | 811 lines | [ TEXT/MPS ]
(* File: ImageCompression.mod Contains: QuickTime Image Compression Interfaces. Version: Technology: QuickTime 2.0 Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17 Copyright: © 1984-1995 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, use the Apple Bug Reporter stack. Include the file and version information (from above) in the problem description and send to: Internet: apple.bugs.applelink.apple.com AppleLink: APPLE.BUGS *) (*$TAGS-*) (*$CALLING PASCAL*) MODULE ImageCompression; IMPORT SYSTEM, Types, Quickdraw, QDOffscreen, Components, Dialogs, StandardFile; (* $PUSH*) (* $ALIGN MAC68K*) (* $LibExport+*) TYPE MatrixRecord* = RECORD matrix*: ARRAY 3,3 (*ΔΔ[0..2,0..2]ΔΔ*) OF Types.Fixed; END; MatrixRecordPtr* = POINTER TO MatrixRecord; FixedPoint* = RECORD x*: Types.Fixed; y*: Types.Fixed; END; FixedRect* = RECORD left*: Types.Fixed; top*: Types.Fixed; right*: Types.Fixed; bottom*: Types.Fixed; END; (* These are the bits that are set in the Components.Component flags, and also in the codecInfo struct. *) CONST codecInfoDoes1* = ASH(1,0); codecInfoDoes2* = ASH(1,1); codecInfoDoes4* = ASH(1,2); codecInfoDoes8* = ASH(1,3); codecInfoDoes16* = ASH(1,4); codecInfoDoes32* = ASH(1,5); codecInfoDoesDither* = ASH(1,6); codecInfoDoesStretch* = ASH(1,7); codecInfoDoesShrink* = ASH(1,8); codecInfoDoesMask* = ASH(1,9); codecInfoDoesTemporal* = ASH(1,10); codecInfoDoesDouble* = ASH(1,11); codecInfoDoesQuad* = ASH(1,12); codecInfoDoesHalf* = ASH(1,13); codecInfoDoesQuarter* = ASH(1,14); codecInfoDoesRotate* = ASH(1,15); codecInfoDoesHorizFlip* = ASH(1,16); codecInfoDoesVertFlip* = ASH(1,17); codecInfoDoesSkew* = ASH(1,18); codecInfoDoesBlend* = ASH(1,19); codecInfoDoesWarp* = ASH(1,20); codecInfoDoesRecompress* = ASH(1,21); codecInfoDoesSpool* = ASH(1,22); codecInfoDoesRateConstrain* = ASH(1,23); codecInfoDepth1* = ASH(1,0); codecInfoDepth2* = ASH(1,1); codecInfoDepth4* = ASH(1,2); codecInfoDepth8* = ASH(1,3); codecInfoDepth16* = ASH(1,4); codecInfoDepth32* = ASH(1,5); codecInfoDepth24* = ASH(1,6); codecInfoDepth33* = ASH(1,7); codecInfoDepth34* = ASH(1,8); codecInfoDepth36* = ASH(1,9); codecInfoDepth40* = ASH(1,10); codecInfoStoresClut* = ASH(1,11); codecInfoDoesLossless* = ASH(1,12); codecInfoSequenceSensitive* = ASH(1,13); codecFlagUseImageBuffer* = ASH(1,0); codecFlagUseScreenBuffer* = ASH(1,1); codecFlagUpdatePrevious* = ASH(1,2); codecFlagNoScreenUpdate* = ASH(1,3); codecFlagWasCompressed* = ASH(1,4); codecFlagDontOffscreen* = ASH(1,5); codecFlagUpdatePreviousComp* = ASH(1,6); codecFlagForceKeyFrame* = ASH(1,7); codecFlagOnlyScreenUpdate* = ASH(1,8); codecFlagLiveGrab* = ASH(1,9); codecFlagDontUseNewImageBuffer* = ASH(1,10); codecFlagInterlaceUpdate* = ASH(1,11); codecFlagCatchUpDiff* = ASH(1,12); codecFlagUsedNewImageBuffer* = ASH(1,14); codecFlagUsedImageBuffer* = ASH(1,15); (* The minimum data size for spooling in or out data *) codecMinimumDataSize* = 32768; compressorComponentType* = LONG("imco"); (* the type for "Components" which compress images *) decompressorComponentType* = LONG("imdc"); TYPE CompressorComponent* = Components.Component; DecompressorComponent* = Components.Component; CodecComponent* = Components.Component; CONST anyCodec* = 0; (* take first working codec of given type *) bestSpeedCodec* = -1; (* take fastest codec of given type *) bestFidelityCodec* = -2; (* take codec which is most accurate *) bestCompressionCodec* = -3; (* take codec of given type that is most accurate *) TYPE CodecType* = LONGINT; CodecFlags* = INTEGER; CodecQ* = LONGINT; CONST codecLosslessQuality* = $400; codecMaxQuality* = $3ff; codecMinQuality* = $000; codecLowQuality* = $100; codecNormalQuality* = $200; codecHighQuality* = $300; codecCompletionSource* = ASH(1,0); (* asynchronous codec is done with source data *) codecCompletionDest* = ASH(1,1); (* asynchronous codec is done with destination data *) codecProgressOpen* = 0; codecProgressUpdatePercent* = 1; codecProgressClose* = 2; TYPE ICMDataProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR dataP: Types.Ptr; bytesNeeded: LONGINT; refcon: LONGINT): Types.OSErr; ICMFlushProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (data: Types.Ptr; bytesAdded: LONGINT; refcon: LONGINT): Types.OSErr; ICMCompletionProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (result: Types.OSErr; flags: INTEGER; refcon: LONGINT); ICMProgressProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: INTEGER; completeness: Types.Fixed; refcon: LONGINT): Types.OSErr; StdPixProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR src: Quickdraw.PixMap; VAR srcRect: Types.Rect; VAR matrix: MatrixRecord; mode: INTEGER; mask: Quickdraw.RgnHandle; VAR matte: Quickdraw.PixMap; VAR matteRect: Types.Rect; flags: INTEGER); ICMAlignmentProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR rp: Types.Rect; refcon: LONGINT); ICMDataUPP* = Types.UniversalProcPtr; ICMFlushUPP* = Types.UniversalProcPtr; ICMCompletionUPP* = Types.UniversalProcPtr; ICMProgressUPP* = Types.UniversalProcPtr; StdPixUPP* = Types.UniversalProcPtr; ICMAlignmentUPP* = Types.UniversalProcPtr; ImageSequence* = LONGINT; ICMProgressProcRecord* = RECORD progressProc*: ICMProgressUPP; progressRefCon*: LONGINT; END; ICMProgressProcRecordPtr* = POINTER TO ICMProgressProcRecord; ICMCompletionProcRecord* = RECORD completionProc*: ICMCompletionUPP; completionRefCon*: LONGINT; END; ICMCompletionProcRecordPtr* = POINTER TO ICMCompletionProcRecord; ICMDataProcRecord* = RECORD dataProc*: ICMDataUPP; dataRefCon*: LONGINT; END; ICMDataProcRecordPtr* = POINTER TO ICMDataProcRecord; ICMFlushProcRecord* = RECORD flushProc*: ICMFlushUPP; flushRefCon*: LONGINT; END; ICMFlushProcRecordPtr* = POINTER TO ICMFlushProcRecord; ICMAlignmentProcRecord* = RECORD alignmentProc*: ICMAlignmentUPP; alignmentRefCon*: LONGINT; END; ICMAlignmentProcRecordPtr* = POINTER TO ICMAlignmentProcRecord; DataRateParams* = RECORD dataRate*: LONGINT; dataOverrun*: LONGINT; frameDuration*: LONGINT; keyFrameRate*: LONGINT; minSpatialQuality*: CodecQ; minTemporalQuality*: CodecQ; END; DataRateParamsPtr* = POINTER TO DataRateParams; ImageDescription* = (*ΔΔPACKEDΔΔ*) RECORD idSize*: LONGINT; (* total size of ImageDescription including extra data ( CLUTs and other per sequence data *) cType*: CodecType; (* what kind of codec compressed this data *) resvd1*: LONGINT; (* reserved for Apple use *) resvd2*: INTEGER; (* reserved for Apple use *) dataRefIndex*: INTEGER; (* set to zero *) version*: INTEGER; (* which version is this data *) revisionLevel*: INTEGER; (* what version of that codec did this *) vendor*: LONGINT; (* whose codec compressed this data *) temporalQuality*: CodecQ; (* what was the temporal quality factor *) spatialQuality*: CodecQ; (* what was the spatial quality factor *) width*: INTEGER; (* how many pixels wide is this data *) height*: INTEGER; (* how many pixels high is this data *) hRes*: Types.Fixed; (* horizontal resolution *) vRes*: Types.Fixed; (* vertical resolution *) dataSize*: LONGINT; (* if known, the size of data for this image descriptor *) frameCount*: INTEGER; (* number of frames this description applies to *) name*: Types.Str31; (* name of codec ( in case not installed ) *) depth*: INTEGER; (* what depth is this data (1-32) or ( 33-40 grayscale ) *) clutID*: INTEGER; (* clut id or if 0 clut follows or -1 if no clut *) END; ImageDescriptionPtr* = POINTER TO ImageDescription; ImageDescriptionHandle* = HANDLE TO ImageDescription (*ΔΔ POINTER TO ImageDescriptionPtr*); CodecInfo* = (*ΔΔPACKEDΔΔ*) RECORD typeName*: Types.Str31; (* name of the codec type i.e.: 'Apple Image Compression' *) version*: INTEGER; (* version of the codec data that this codec knows about *) revisionLevel*: INTEGER; (* revision level of this codec i.e: 0x00010001 (1.0.1) *) vendor*: LONGINT; (* Maker of this codec i.e: LONG("appl") *) decompressFlags*: LONGINT; (* codecInfo flags for decompression capabilities *) compressFlags*: LONGINT; (* codecInfo flags for compression capabilities *) formatFlags*: LONGINT; (* codecInfo flags for compression format details *) compressionAccuracy*: Types.UInt8; (* measure (1-255) of accuracy of this codec for compress (0 if unknown) *) decompressionAccuracy*: Types.UInt8; (* measure (1-255) of accuracy of this codec for decompress (0 if unknown) *) compressionSpeed*: INTEGER; (* ( millisecs for compressing 320x240 on base mac II) (0 if unknown) *) decompressionSpeed*: INTEGER; (* ( millisecs for decompressing 320x240 on mac II)(0 if unknown) *) compressionLevel*: Types.UInt8; (* measure (1-255) of compression level of this codec (0 if unknown) *) resvd*: Types.UInt8; (* pad *) minimumHeight*: INTEGER; (* minimum height of image (block size) *) minimumWidth*: INTEGER; (* minimum width of image (block size) *) decompressPipelineLatency*: INTEGER; (* in milliseconds ( for asynchronous codecs ) *) compressPipelineLatency*: INTEGER; (* in milliseconds ( for asynchronous codecs ) *) privateData*: LONGINT; END; CodecNameSpec* = RECORD codec*: CodecComponent; cType*: CodecType; typeName*: Types.Str31; name*: Types.Handle; END; CodecNameSpecList* = RECORD count*: INTEGER; list*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CodecNameSpec; END; CodecNameSpecListPtr* = POINTER TO CodecNameSpecList; CONST defaultDither* = 0; forceDither* = 1; suppressDither* = 2; useColorMatching* = 4; TYPE ICMFrameTimeRecord* = RECORD value*: Types.wide; (* frame time*) scale*: LONGINT; (* timescale of value/duration fields*) base*: Types.Ptr; (* timebase*) duration*: LONGINT; (* duration frame is to be displayed (0 if unknown)*) rate*: Types.Fixed; (* rate of timebase relative to wall-time*) END; ICMFrameTimePtr* = POINTER TO ICMFrameTimeRecord; CONST uppICMDataProcInfo* = $00000FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param): 2 byte result; *) uppICMFlushProcInfo* = $00000FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param): 2 byte result; *) uppICMCompletionProcInfo* = $00000E80; (* PROCEDURE (2 byte param, 2 byte param, 4 byte param); *) uppICMProgressProcInfo* = $00000FA0; (* PROCEDURE (2 byte param, 4 byte param, 4 byte param): 2 byte result; *) uppStdPixProcInfo* = $002FEFC0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param, 2 byte param); *) uppICMAlignmentProcInfo* = $000003C0; (* PROCEDURE (4 byte param, 4 byte param); *) PROCEDURE NewICMDataProc*(userRoutine: ICMDataProcPtr): ICMDataUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewICMFlushProc*(userRoutine: ICMFlushProcPtr): ICMFlushUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewICMCompletionProc*(userRoutine: ICMCompletionProcPtr): ICMCompletionUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewICMProgressProc*(userRoutine: ICMProgressProcPtr): ICMProgressUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewStdPixProc*(userRoutine: StdPixProcPtr): StdPixUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE NewICMAlignmentProc*(userRoutine: ICMAlignmentProcPtr): ICMAlignmentUPP; (*$IF NOT GENERATINGCFM *) INLINE PASCAL $2E9F; (*$END*) PROCEDURE CallICMDataProc*(VAR dataP: Types.Ptr; bytesNeeded: LONGINT; refcon: LONGINT; userRoutine: ICMDataUPP): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallICMFlushProc*(data: Types.Ptr; bytesAdded: LONGINT; refcon: LONGINT; userRoutine: ICMFlushUPP): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallICMCompletionProc*(result: Types.OSErr; flags: INTEGER; refcon: LONGINT; userRoutine: ICMCompletionUPP); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallICMProgressProc*(message: INTEGER; completeness: Types.Fixed; refcon: LONGINT; userRoutine: ICMProgressUPP): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallStdPixProc*(VAR src: Quickdraw.PixMap; VAR srcRect: Types.Rect; VAR matrix: MatrixRecord; mode: INTEGER; mask: Quickdraw.RgnHandle; VAR matte: Quickdraw.PixMap; VAR matteRect: Types.Rect; flags: INTEGER; userRoutine: StdPixUPP); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CallICMAlignmentProc*(VAR rp: Types.Rect; refcon: LONGINT; userRoutine: ICMAlignmentUPP); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $205F, $4E90; (*$END*) PROCEDURE CodecManagerVersion*(VAR version: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7000, $AAA3; (*$END*) PROCEDURE GetCodecNameList*(VAR list: CodecNameSpecListPtr; showAll: INTEGER): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7001, $AAA3; (*$END*) PROCEDURE DisposeCodecNameList*(list: CodecNameSpecListPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700F, $AAA3; (*$END*) PROCEDURE GetCodecInfo*(VAR info: CodecInfo; cType: CodecType; codec: CodecComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7003, $AAA3; (*$END*) PROCEDURE GetMaxCompressionSize*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; colorDepth: INTEGER; quality: CodecQ; cType: CodecType; codec: CompressorComponent; VAR size: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7004, $AAA3; (*$END*) PROCEDURE GetCompressionTime*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; colorDepth: INTEGER; cType: CodecType; codec: CompressorComponent; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR compressTime: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7005, $AAA3; (*$END*) PROCEDURE CompressImage*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; quality: CodecQ; cType: CodecType; desc: ImageDescriptionHandle; data: Types.Ptr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7006, $AAA3; (*$END*) PROCEDURE FCompressImage*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; colorDepth: INTEGER; quality: CodecQ; cType: CodecType; codec: CompressorComponent; clut: Quickdraw.CTabHandle; flags: CodecFlags; bufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; progressProc: ICMProgressProcRecordPtr; desc: ImageDescriptionHandle; data: Types.Ptr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7007, $AAA3; (*$END*) PROCEDURE DecompressImage*(data: Types.Ptr; desc: ImageDescriptionHandle; dst: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; (*CONST*)VAR dstRect: Types.Rect; mode: INTEGER; mask: Quickdraw.RgnHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7008, $AAA3; (*$END*) PROCEDURE FDecompressImage*(data: Types.Ptr; desc: ImageDescriptionHandle; dst: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; matrix: MatrixRecordPtr; mode: INTEGER; mask: Quickdraw.RgnHandle; matte: Quickdraw.PixMapHandle; (*CONST*)VAR matteRect: Types.Rect; accuracy: CodecQ; codec: DecompressorComponent; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7009, $AAA3; (*$END*) PROCEDURE CompressSequenceBegin*(VAR seqID: ImageSequence; src: Quickdraw.PixMapHandle; prev: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; (*CONST*)VAR prevRect: Types.Rect; colorDepth: INTEGER; cType: CodecType; codec: CompressorComponent; spatialQuality: CodecQ; temporalQuality: CodecQ; keyFrameRate: LONGINT; clut: Quickdraw.CTabHandle; flags: CodecFlags; desc: ImageDescriptionHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700A, $AAA3; (*$END*) PROCEDURE CompressSequenceFrame*(seqID: ImageSequence; src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; flags: CodecFlags; data: Types.Ptr; VAR dataSize: LONGINT; VAR similarity: Types.UInt8; asyncCompletionProc: ICMCompletionProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700B, $AAA3; (*$END*) PROCEDURE DecompressSequenceBegin*(VAR seqID: ImageSequence; desc: ImageDescriptionHandle; port: Quickdraw.CGrafPtr; gdh: Quickdraw.GDHandle; (*CONST*)VAR srcRect: Types.Rect; matrix: MatrixRecordPtr; mode: INTEGER; mask: Quickdraw.RgnHandle; flags: CodecFlags; accuracy: CodecQ; codec: DecompressorComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700D, $AAA3; (*$END*) PROCEDURE DecompressSequenceBeginS*(VAR seqID: ImageSequence; desc: ImageDescriptionHandle; data: Types.Ptr; dataSize: LONGINT; port: Quickdraw.CGrafPtr; gdh: Quickdraw.GDHandle; (*CONST*)VAR srcRect: Types.Rect; matrix: MatrixRecordPtr; mode: INTEGER; mask: Quickdraw.RgnHandle; flags: CodecFlags; accuracy: CodecQ; codec: DecompressorComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $30, $5D, $AAA3; (*$END*) PROCEDURE DecompressSequenceFrame*(seqID: ImageSequence; data: Types.Ptr; inFlags: CodecFlags; VAR outFlags: CodecFlags; asyncCompletionProc: ICMCompletionProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700E, $AAA3; (*$END*) PROCEDURE DecompressSequenceFrameS*(seqID: ImageSequence; data: Types.Ptr; dataSize: LONGINT; inFlags: CodecFlags; VAR outFlags: CodecFlags; asyncCompletionProc: ICMCompletionProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $16, $47, $AAA3; (*$END*) PROCEDURE DecompressSequenceFrameWhen*(seqID: ImageSequence; data: Types.Ptr; dataSize: LONGINT; inFlags: CodecFlags; VAR outFlags: CodecFlags; asyncCompletionProc: ICMCompletionProcRecordPtr; (*CONST*)VAR frameTime: ICMFrameTimeRecord): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $1A, $5E, $AAA3; (*$END*) PROCEDURE CDSequenceFlush*(seqID: ImageSequence): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $4, $5F, $AAA3; (*$END*) PROCEDURE SetDSequenceMatrix*(seqID: ImageSequence; matrix: MatrixRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7010, $AAA3; (*$END*) PROCEDURE SetDSequenceMatte*(seqID: ImageSequence; matte: Quickdraw.PixMapHandle; (*CONST*)VAR matteRect: Types.Rect): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7011, $AAA3; (*$END*) PROCEDURE SetDSequenceMask*(seqID: ImageSequence; mask: Quickdraw.RgnHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7012, $AAA3; (*$END*) PROCEDURE SetDSequenceTransferMode*(seqID: ImageSequence; mode: INTEGER; (*CONST*)VAR opColor: Quickdraw.RGBColor): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7013, $AAA3; (*$END*) PROCEDURE SetDSequenceDataProc*(seqID: ImageSequence; dataProc: ICMDataProcRecordPtr; bufferSize: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7014, $AAA3; (*$END*) PROCEDURE SetDSequenceAccuracy*(seqID: ImageSequence; accuracy: CodecQ): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7034, $AAA3; (*$END*) PROCEDURE SetDSequenceSrcRect*(seqID: ImageSequence; (*CONST*)VAR srcRect: Types.Rect): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7035, $AAA3; (*$END*) PROCEDURE GetDSequenceImageBuffer*(seqID: ImageSequence; VAR gworld: QDOffscreen.GWorldPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7015, $AAA3; (*$END*) PROCEDURE GetDSequenceScreenBuffer*(seqID: ImageSequence; VAR gworld: QDOffscreen.GWorldPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7016, $AAA3; (*$END*) PROCEDURE SetCSequenceQuality*(seqID: ImageSequence; spatialQuality: CodecQ; temporalQuality: CodecQ): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7017, $AAA3; (*$END*) PROCEDURE SetCSequencePrev*(seqID: ImageSequence; prev: Quickdraw.PixMapHandle; (*CONST*)VAR prevRect: Types.Rect): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7018, $AAA3; (*$END*) PROCEDURE SetCSequenceFlushProc*(seqID: ImageSequence; flushProc: ICMFlushProcRecordPtr; bufferSize: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7033, $AAA3; (*$END*) PROCEDURE SetCSequenceKeyFrameRate*(seqID: ImageSequence; keyframerate: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7036, $AAA3; (*$END*) PROCEDURE GetCSequenceKeyFrameRate*(seqID: ImageSequence; VAR keyframerate: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $4B, $AAA3; (*$END*) PROCEDURE GetCSequencePrevBuffer*(seqID: ImageSequence; VAR gworld: QDOffscreen.GWorldPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7019, $AAA3; (*$END*) PROCEDURE CDSequenceBusy*(seqID: ImageSequence): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701A, $AAA3; (*$END*) PROCEDURE CDSequenceEnd*(seqID: ImageSequence): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701B, $AAA3; (*$END*) PROCEDURE GetCompressedImageSize*(desc: ImageDescriptionHandle; data: Types.Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; VAR dataSize: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701C, $AAA3; (*$END*) PROCEDURE GetSimilarity*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; desc: ImageDescriptionHandle; data: Types.Ptr; VAR similarity: Types.Fixed): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701D, $AAA3; (*$END*) PROCEDURE GetImageDescriptionCTable*(desc: ImageDescriptionHandle; VAR ctable: Quickdraw.CTabHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701E, $AAA3; (*$END*) PROCEDURE SetImageDescriptionCTable*(desc: ImageDescriptionHandle; ctable: Quickdraw.CTabHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701F, $AAA3; (*$END*) PROCEDURE GetImageDescriptionExtension*(desc: ImageDescriptionHandle; VAR extension: Types.Handle; idType: LONGINT; index: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7020, $AAA3; (*$END*) PROCEDURE SetImageDescriptionExtension*(desc: ImageDescriptionHandle; extension: Types.Handle; idType: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7021, $AAA3; (*$END*) PROCEDURE RemoveImageDescriptionExtension*(VAR desc: ImageDescription; idType: LONGINT; index: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $3A, $AAA3; (*$END*) PROCEDURE CountImageDescriptionExtensionType*(VAR desc: ImageDescription; idType: LONGINT; VAR count: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $3B, $AAA3; (*$END*) PROCEDURE GetNextImageDescriptionExtensionType*(VAR desc: ImageDescription; VAR idType: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $3C, $AAA3; (*$END*) PROCEDURE FindCodec*(cType: CodecType; specCodec: CodecComponent; VAR compressor: CompressorComponent; VAR decompressor: DecompressorComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7023, $AAA3; (*$END*) PROCEDURE CompressPicture*(srcPicture: Quickdraw.PicHandle; dstPicture: Quickdraw.PicHandle; quality: CodecQ; cType: CodecType): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7024, $AAA3; (*$END*) PROCEDURE FCompressPicture*(srcPicture: Quickdraw.PicHandle; dstPicture: Quickdraw.PicHandle; colorDepth: INTEGER; clut: Quickdraw.CTabHandle; quality: CodecQ; doDither: INTEGER; compressAgain: INTEGER; progressProc: ICMProgressProcRecordPtr; cType: CodecType; codec: CompressorComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7025, $AAA3; (*$END*) PROCEDURE CompressPictureFile*(srcRefNum: INTEGER; dstRefNum: INTEGER; quality: CodecQ; cType: CodecType): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7026, $AAA3; (*$END*) PROCEDURE FCompressPictureFile*(srcRefNum: INTEGER; dstRefNum: INTEGER; colorDepth: INTEGER; clut: Quickdraw.CTabHandle; quality: CodecQ; doDither: INTEGER; compressAgain: INTEGER; progressProc: ICMProgressProcRecordPtr; cType: CodecType; codec: CompressorComponent): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7027, $AAA3; (*$END*) PROCEDURE GetPictureFileHeader*(refNum: INTEGER; VAR frame: Types.Rect; VAR header: Quickdraw.OpenCPicParams): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7028, $AAA3; (*$END*) PROCEDURE DrawPictureFile*(refNum: INTEGER; (*CONST*)VAR frame: Types.Rect; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7029, $AAA3; (*$END*) PROCEDURE DrawTrimmedPicture*(srcPicture: Quickdraw.PicHandle; (*CONST*)VAR frame: Types.Rect; trimMask: Quickdraw.RgnHandle; doDither: INTEGER; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702E, $AAA3; (*$END*) PROCEDURE DrawTrimmedPictureFile*(srcRefnum: INTEGER; (*CONST*)VAR frame: Types.Rect; trimMask: Quickdraw.RgnHandle; doDither: INTEGER; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702F, $AAA3; (*$END*) PROCEDURE MakeThumbnailFromPicture*(picture: Quickdraw.PicHandle; colorDepth: INTEGER; thumbnail: Quickdraw.PicHandle; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702A, $AAA3; (*$END*) PROCEDURE MakeThumbnailFromPictureFile*(refNum: INTEGER; colorDepth: INTEGER; thumbnail: Quickdraw.PicHandle; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702B, $AAA3; (*$END*) PROCEDURE MakeThumbnailFromPixMap*(src: Quickdraw.PixMapHandle; (*CONST*)VAR srcRect: Types.Rect; colorDepth: INTEGER; thumbnail: Quickdraw.PicHandle; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702C, $AAA3; (*$END*) PROCEDURE TrimImage*(desc: ImageDescriptionHandle; inData: Types.Ptr; inBufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; outData: Types.Ptr; outBufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; VAR trimRect: Types.Rect; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $702D, $AAA3; (*$END*) PROCEDURE ConvertImage*(srcDD: ImageDescriptionHandle; srcData: Types.Ptr; colorDepth: INTEGER; clut: Quickdraw.CTabHandle; accuracy: CodecQ; quality: CodecQ; cType: CodecType; codec: CodecComponent; dstDD: ImageDescriptionHandle; dstData: Types.Ptr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7030, $AAA3; (*$END*) PROCEDURE GetCompressedPixMapInfo*(pix: Quickdraw.PixMapPtr; VAR desc: ImageDescriptionHandle; VAR data: Types.Ptr; VAR bufferSize: LONGINT; VAR dataProc: ICMDataProcRecord; VAR progressProc: ICMProgressProcRecord): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7037, $AAA3; (*$END*) PROCEDURE SetCompressedPixMapInfo*(pix: Quickdraw.PixMapPtr; desc: ImageDescriptionHandle; data: Types.Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; progressProc: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7038, $AAA3; (*$END*) PROCEDURE StdPix*(src: Quickdraw.PixMapPtr; (*CONST*)VAR srcRect: Types.Rect; matrix: MatrixRecordPtr; mode: INTEGER; mask: Quickdraw.RgnHandle; matte: Quickdraw.PixMapPtr; (*CONST*)VAR matteRect: Types.Rect; flags: INTEGER); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $700C, $AAA3; (*$END*) PROCEDURE TransformRgn*(matrix: MatrixRecordPtr; rgn: Quickdraw.RgnHandle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7039, $AAA3; (*$END*) (*********** preview stuff ***********) PROCEDURE SFGetFilePreview*(where: Types.Point; prompt: Types.ConstStr255Param; fileFilter: StandardFile.FileFilterUPP; numTypes: INTEGER; typeList: StandardFile.ConstSFTypeListPtr; dlgHook: StandardFile.DlgHookUPP; VAR reply: StandardFile.SFReply); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7041, $AAA3; (*$END*) PROCEDURE SFPGetFilePreview*(where: Types.Point; prompt: Types.ConstStr255Param; fileFilter: StandardFile.FileFilterUPP; numTypes: INTEGER; typeList: StandardFile.ConstSFTypeListPtr; dlgHook: StandardFile.DlgHookUPP; VAR reply: StandardFile.SFReply; dlgID: INTEGER; filterProc: Dialogs.ModalFilterUPP); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7042, $AAA3; (*$END*) PROCEDURE StandardGetFilePreview*(fileFilter: StandardFile.FileFilterUPP; numTypes: INTEGER; typeList: StandardFile.ConstSFTypeListPtr; VAR reply: StandardFile.StandardFileReply); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7043, $AAA3; (*$END*) PROCEDURE CustomGetFilePreview*(fileFilter: StandardFile.FileFilterYDUPP; numTypes: INTEGER; typeList: StandardFile.ConstSFTypeListPtr; VAR reply: StandardFile.StandardFileReply; dlgID: INTEGER; where: Types.Point; dlgHook: StandardFile.DlgHookYDUPP; filterProc: StandardFile.ModalFilterYDUPP; activeList: StandardFile.ActivationOrderListPtr; activateProc: StandardFile.ActivateYDUPP; yourDataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7044, $AAA3; (*$END*) PROCEDURE MakeFilePreview*(resRefNum: INTEGER; progress: ICMProgressProcRecordPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7045, $AAA3; (*$END*) PROCEDURE AddFilePreview*(resRefNum: INTEGER; previewType: Types.OSType; previewData: Types.Handle): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7046, $AAA3; (*$END*) CONST sfpItemPreviewAreaUser* = 11; sfpItemPreviewStaticText* = 12; sfpItemPreviewDividerUser* = 13; sfpItemCreatePreviewButton* = 14; sfpItemShowPreviewButton* = 15; TYPE PreviewResourceRecord* = RECORD modDate*: LONGINT; version*: INTEGER; resType*: Types.OSType; resID*: INTEGER; END; PreviewResourcePtr* = POINTER TO PreviewResourceRecord; PreviewResource* = HANDLE TO PreviewResourceRecord (*ΔΔ POINTER TO PreviewResourcePtr*); PROCEDURE AlignScreenRect*(VAR rp: Types.Rect; alignmentProc: ICMAlignmentProcRecordPtr); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $4C, $AAA3; (*$END*) PROCEDURE AlignWindow*(wp: Quickdraw.WindowPtr; front: BOOLEAN; (*CONST*)VAR alignmentRect: Types.Rect; alignmentProc: ICMAlignmentProcRecordPtr); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $E, $4D, $AAA3; (*$END*) PROCEDURE DragAlignedWindow*(wp: Quickdraw.WindowPtr; startPt: Types.Point; VAR boundsRect: Types.Rect; VAR alignmentRect: Types.Rect; alignmentProc: ICMAlignmentProcRecordPtr); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $14, $4E, $AAA3; (*$END*) PROCEDURE DragAlignedGrayRgn*(theRgn: Quickdraw.RgnHandle; startPt: Types.Point; VAR boundsRect: Types.Rect; VAR slopRect: Types.Rect; axis: INTEGER; actionProc: Types.UniversalProcPtr; VAR alignmentRect: Types.Rect; alignmentProc: ICMAlignmentProcRecordPtr): LONGINT; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $1E, $4F, $AAA3; (*$END*) PROCEDURE SetCSequenceDataRateParams*(seqID: ImageSequence; params: DataRateParamsPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $50, $AAA3; (*$END*) PROCEDURE SetCSequenceFrameNumber*(seqID: ImageSequence; frameNumber: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $51, $AAA3; (*$END*) PROCEDURE NewImageGWorld*(VAR gworld: QDOffscreen.GWorldPtr; idh: ImageDescriptionHandle; flags: QDOffscreen.GWorldFlags): Quickdraw.QDErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $52, $AAA3; (*$END*) PROCEDURE GetCSequenceDataRateParams*(seqID: ImageSequence; params: DataRateParamsPtr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $53, $AAA3; (*$END*) PROCEDURE GetCSequenceFrameNumber*(seqID: ImageSequence; VAR frameNumber: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $54, $AAA3; (*$END*) PROCEDURE GetBestDeviceRect*(VAR gdh: Quickdraw.GDHandle; VAR rp: Types.Rect): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $55, $AAA3; (*$END*) PROCEDURE SetSequenceProgressProc*(seqID: ImageSequence; VAR progressProc: ICMProgressProcRecord): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $8, $56, $AAA3; (*$END*) PROCEDURE GDHasScale*(gdh: Quickdraw.GDHandle; depth: INTEGER; VAR scale: Types.Fixed): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $A, $5A, $AAA3; (*$END*) PROCEDURE GDGetScale*(gdh: Quickdraw.GDHandle; VAR scale: Types.Fixed; VAR flags: INTEGER): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $5B, $AAA3; (*$END*) PROCEDURE GDSetScale*(gdh: Quickdraw.GDHandle; scale: Types.Fixed; flags: INTEGER): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $A, $5C, $AAA3; (*$END*) PROCEDURE ICMShieldSequenceCursor*(seqID: ImageSequence): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $4, $62, $AAA3; (*$END*) PROCEDURE ICMDecompressComplete*(seqID: ImageSequence; err: Types.OSErr; flag: INTEGER; completionRtn: ICMCompletionProcRecordPtr); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $63, $AAA3; (*$END*) PROCEDURE SetDSequenceTimeCode*(seqID: ImageSequence; timeCodeFormat: (*ΔΔUNIVΔΔ*) Types.Ptr; timeCodeTime: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $203C, $C, $64, $AAA3; (*$END*) CONST identityMatrixType* = $00; (* result if matrix is identity *) translateMatrixType* = $01; (* result if matrix translates *) scaleMatrixType* = $02; (* result if matrix scales *) scaleTranslateMatrixType* = $03; (* result if matrix scales and translates *) linearMatrixType* = $04; (* result if matrix is general 2 x 2 *) linearTranslateMatrixType* = $05; (* result if matrix is general 2 x 2 and translates *) perspectiveMatrixType* = $06; (* result if matrix is general 3 x 3 *) TYPE MatrixFlags* = INTEGER; PROCEDURE GetMatrixType*((*CONST*)VAR m: MatrixRecord): INTEGER; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7014, $ABC2; (*$END*) PROCEDURE CopyMatrix*((*CONST*)VAR m1: MatrixRecord; VAR m2: MatrixRecord); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7020, $ABC2; (*$END*) PROCEDURE EqualMatrix*((*CONST*)VAR m1: MatrixRecord; (*CONST*)VAR m2: MatrixRecord): BOOLEAN; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7021, $ABC2; (*$END*) PROCEDURE SetIdentityMatrix*(VAR matrix: MatrixRecord); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7015, $ABC2; (*$END*) PROCEDURE TranslateMatrix*(VAR m: MatrixRecord; deltaH: Types.Fixed; deltaV: Types.Fixed); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7019, $ABC2; (*$END*) PROCEDURE RotateMatrix*(VAR m: MatrixRecord; degrees: Types.Fixed; aboutX: Types.Fixed; aboutY: Types.Fixed); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7016, $ABC2; (*$END*) PROCEDURE ScaleMatrix*(VAR m: MatrixRecord; scaleX: Types.Fixed; scaleY: Types.Fixed; aboutX: Types.Fixed; aboutY: Types.Fixed); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7017, $ABC2; (*$END*) PROCEDURE SkewMatrix*(VAR m: MatrixRecord; skewX: Types.Fixed; skewY: Types.Fixed; aboutX: Types.Fixed; aboutY: Types.Fixed); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7018, $ABC2; (*$END*) PROCEDURE TransformFixedPoints*((*CONST*)VAR m: MatrixRecord; VAR fpt: FixedPoint; count: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7022, $ABC2; (*$END*) PROCEDURE TransformPoints*((*CONST*)VAR mp: MatrixRecord; VAR pt1: Types.Point; count: LONGINT): Types.OSErr; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7023, $ABC2; (*$END*) PROCEDURE TransformFixedRect*((*CONST*)VAR m: MatrixRecord; VAR fr: FixedRect; VAR fpp: FixedPoint): BOOLEAN; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7024, $ABC2; (*$END*) PROCEDURE TransformRect*((*CONST*)VAR m: MatrixRecord; VAR r: Types.Rect; VAR fpp: FixedPoint): BOOLEAN; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $7025, $ABC2; (*$END*) PROCEDURE InverseMatrix*((*CONST*)VAR m: MatrixRecord; VAR im: MatrixRecord): BOOLEAN; (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701C, $ABC2; (*$END*) PROCEDURE ConcatMatrix*((*CONST*)VAR a: MatrixRecord; VAR b: MatrixRecord); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701B, $ABC2; (*$END*) PROCEDURE RectMatrix*(VAR matrix: MatrixRecord; (*CONST*)VAR srcRect: Types.Rect; (*CONST*)VAR dstRect: Types.Rect); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701E, $ABC2; (*$END*) PROCEDURE MapMatrix*(VAR matrix: MatrixRecord; (*CONST*)VAR fromRect: Types.Rect; (*CONST*)VAR toRect: Types.Rect); (*$IF NOT GENERATINGCFM*) INLINE PASCAL $701D, $ABC2; (*$END*) (* $ALIGN RESET*) (* $POP*) END ImageCompression.